package com.controladores.controlvehicular;

import com.controladores.controlvehicular.R;
import com.controladores.controlvehicular.comunicacion.ComunicacionTCP;
import com.controladores.controlvehicular.estructura.RegistroExonerado;
import com.controladores.controlvehicular.estructura.RegistroRecarga;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Typeface;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
import android.text.Editable;
import android.text.TextWatcher;
import java.util.regex.*;
import com.controladores.controlvehicular.basededatos.GestorBaseDatos;
/**
* Clase para la interfaz de registro de información de un vehículo
* @author Luis Soto <lsantoniosoto@gmail.com>
* @author Mariuxi Salinas <mariuxidelcisne@gmail.com>
* @version 1.0, 11/04/2014
*/
public class InformacionVehiculo extends Activity implements TextWatcher,
OnClickListener  {
	protected TextView fuenteInformacionVehiculo;
	private String placa;
	private String color;
	private String horaControl;
	private String marca;
	private String fechacontrol;
	private String informacionUsuario, infomacionNombreZona, informacionIdSubCalle;
	private int infomacionEspacioRegistro = 0;
	int estadoEnvio = 1;
	Button aceptar, botonColor;
	TimePicker TPhoraControl;
	String numplaca;
	private String mac="";
	private RegistroRecarga registroRecarga;
	private RegistroExonerado registroExonerado;
	DataInputStream entrada;
	DataOutputStream salida;
	private GestorBaseDatos miBBDDHelper;
	TextView cajaPlaca;
	AutoCompleteTextView cajaColor, cajaMarca;
	private Button botonGuardar,botonCancelar;
	String[] items_Colores = { "blanco", "negro", "amarillo", "azul", "rojo",
			"gris", "tomate", "verde", "violeta", "celeste"};

	String[] items_Marca = { "Toyota", "suzuki", "bmw", "kia", "chevrolet",
			"mazda", "ford", "mercedez", "renault",
			"chevrolet corsa", "suzuki", "citroen", "fiat", "jeep",
			"peugeot","montero","mitsubishi" };

	public String getNumplaca() {
		return numplaca;
	}

	public void setNumplaca(String numplaca) {
		this.numplaca = numplaca;
	}

	public DataInputStream getEntrada() {
		return entrada;
	}

	public void setEntrada(DataInputStream entrada) {
		this.entrada = entrada;
	}

	public DataOutputStream getSalida() {
		return salida;
	}

	public void setSalida(DataOutputStream salida) {
		this.salida = salida;
	}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_informacion_vehiculo);
		inicializarComponentes();
		inicializarAccionesDeComponentes();
		cargarInformacionViculo();
	}

	/**
	 * Inicializa los componentes de la interfaz correspondiente a la clase
	 */
	private void inicializarComponentes() {
		fuenteInformacionVehiculo = (TextView) findViewById(R.id.tInfVehiculo);
		Typeface tipofuenteInfVehiculo = Typeface.createFromAsset(getAssets(),
				"RobotoCondensedRegular.ttf");
		fuenteInformacionVehiculo.setTypeface(tipofuenteInfVehiculo);
		cajaPlaca = (TextView) findViewById(R.id.id_placa);
		cajaColor = (AutoCompleteTextView) findViewById(R.id.id_color);
		cajaMarca = (AutoCompleteTextView) findViewById(R.id.id_marca);
		botonGuardar = (Button) findViewById(R.id.btnSiguinte);
		botonCancelar = (Button) findViewById(R.id.btnCancelarInfo);
	}
	/**
	 * Inicaliza los eventos de los componentes
	 */
	private void inicializarAccionesDeComponentes() {
		cajaPlaca.addTextChangedListener(this);
		cajaColor.addTextChangedListener(this);
		cajaColor.setAdapter(new ArrayAdapter<String>(this,
				android.R.layout.simple_dropdown_item_1line, items_Colores));
		cajaMarca.addTextChangedListener(this);
		cajaMarca.setAdapter(new ArrayAdapter<String>(this,
				android.R.layout.simple_dropdown_item_1line, items_Marca));
		botonGuardar.setOnClickListener(this);
		botonCancelar.setOnClickListener(this);
		
	}
	/**
	 * Recibe parámetros enviados desde la interfaz anterior
	 */
	private void cargarInformacionViculo(){
		Bundle datosZona = getIntent().getExtras();
		informacionUsuario = datosZona.getString("aUsuario");
		infomacionNombreZona = datosZona.getString("aNumZona");
		informacionIdSubCalle = datosZona.getString("aIdSubCalle");
		infomacionEspacioRegistro = datosZona.getInt("aNumEsp");
	}
	/**
	 * Cancela la interfaz
	 */
	private void cancelar() {
		Intent zonaControl = new Intent(InformacionVehiculo.this, ZonasControl.class);
		startActivity(zonaControl);

	}
	/**
	 * Obtiene los datos ingresados en la interfaz
	 */
	private void guardar() {
		if (comprobarGuardarValido()) {
			boolean bienHecho = false;
			try {
				String placaObtenida = cajaPlaca.getText().toString().trim();
				placa = placaObtenida.toUpperCase();
				color = cajaColor.getText().toString().trim();
				marca = cajaMarca.getText().toString().trim();
				Calendar c = Calendar.getInstance();
				Integer tphora = c.get(Calendar.HOUR_OF_DAY);
				Integer tpminutos = c.get(Calendar.MINUTE);
				horaControl = tphora + ":" + tpminutos;
				Date date = new Date();
				DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
				fechacontrol = dateFormat.format(date);

			} catch (Exception ex) {
				// Algo ha ido mal, capturamos la excepcion
				bienHecho = false;
			}

			if (!bienHecho)
				;

		} else {
			mostrarMensaje("Rellena todos los campos antes de continuar");
		}
	}
	/**
	 * Crea una lista de opciones para trabajar con la información del vehículo
	 * @return Lista de opciones
	 */
	private Dialog menutiposRegistrosHorizontal() {

		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setTitle("Selecione un tipo de registro.")
				.setIcon(R.drawable.logo_design)
				.setItems(R.array.array_TipoRegistro,
						new DialogInterface.OnClickListener() {
							public void onClick(DialogInterface dialog, int item) {
								switch (item) {
								case 0:
									Intent aRegistroTarjeta = new Intent(
											InformacionVehiculo.this,
											RegistrarTarjeta.class);
									aRegistroTarjeta.putExtra("datoUsuario",
											informacionUsuario);
									aRegistroTarjeta.putExtra("datoNombreZona",
											infomacionNombreZona);
									aRegistroTarjeta.putExtra("datoIdSubCalle",
											informacionIdSubCalle);
									aRegistroTarjeta.putExtra(
											"datoNumeroespacio",
											infomacionEspacioRegistro);
									aRegistroTarjeta.putExtra("datoplaca",
											placa);
									aRegistroTarjeta.putExtra("datocolor",
											color);
									aRegistroTarjeta.putExtra("datomarca",
											marca);
									aRegistroTarjeta.putExtra(
											"datohoraControl", horaControl);
									aRegistroTarjeta.putExtra(
											"datofechacontrol", fechacontrol);
									startActivity(aRegistroTarjeta);

									break;
								case 1:

									Intent aMultaTarjeta = new Intent(
											InformacionVehiculo.this,
											RegistrarMulta.class);
									aMultaTarjeta.putExtra("datoUsuario",
											informacionUsuario);
									aMultaTarjeta.putExtra("datoNombreZona",
											infomacionNombreZona);
									aMultaTarjeta.putExtra("datoIdSubCalle",
											informacionIdSubCalle);
									aMultaTarjeta.putExtra("datoNumeroespacio",
											infomacionEspacioRegistro);
									aMultaTarjeta.putExtra("datoplaca", placa);
									aMultaTarjeta.putExtra("datocolor", color);
									aMultaTarjeta.putExtra("datomarca", marca);
									aMultaTarjeta.putExtra("datohoraControl",
											horaControl);
									aMultaTarjeta.putExtra("datofechacontrol",
											fechacontrol);
									String controlador = "MultaControlador";
									aMultaTarjeta.putExtra("Controlador",
											controlador);
									startActivity(aMultaTarjeta);
									break;
								case 2:
									enviarRegistroExoneradosMunicipio();

									break;
								}
							}
						});
		AlertDialog alert = builder.create();
		alert.show();
		return alert;
	}
	/**
	 * Envía al servidor la información del vehículo para detectar un tipo de usuario
	 */
	private void InformacionEnvioDatos() {
		AlertDialog selecRegistro = new AlertDialog.Builder(
				InformacionVehiculo.this).create();
		selecRegistro.setTitle("Información");
		selecRegistro.setMessage("Está seguro de continuar: ");

		selecRegistro.setButton("Continuar",
				new DialogInterface.OnClickListener() {
					boolean bienHecho = false;

					@Override
					public void onClick(DialogInterface arg0, int arg1) {
						GestorBaseDatos manejador = new GestorBaseDatos(InformacionVehiculo.this);
						try {
							manejador.abrirBaseDatos();
							mac=manejador.obtenerMac();
							manejador.close();
						} catch (Exception e) {
							
						}
						registroRecarga = new RegistroRecarga();
						registroRecarga.setNombreControlador(informacionUsuario);
						registroRecarga.setNombreZona(infomacionNombreZona);
						registroRecarga.setIdSubCalle(Integer.parseInt(informacionIdSubCalle));
						registroRecarga.setNumeroEspacio(infomacionEspacioRegistro);
						registroRecarga.setPlaca(placa);
						registroRecarga.setColor(color);
						registroRecarga.setMarca(marca);
						registroRecarga.setHora(horaControl);
						registroRecarga.setFecha(fechacontrol);
						
						String valor = "";
						ComunicacionTCP comunicacion = new ComunicacionTCP();
						valor = comunicacion.envioInformacionVehiculo(
								informacionUsuario, infomacionNombreZona, informacionIdSubCalle,
								infomacionEspacioRegistro, placa, color, marca,
								horaControl, fechacontrol,mac);
						if (valor.compareToIgnoreCase("e") == 0) {
							menuConexionFallidaInformacionEnvioDatos();
						}
						if (valor.compareToIgnoreCase("0") == 0) {
							mostrarMensaje("Codigo Correcto");
							menutiposRegistrosHorizontal();
						}
						if (valor.compareToIgnoreCase("1") == 0) {
							mostrarMensaje("Registro enviado y guardado como RECARGA");
							GestorBaseDatos miBBDDHelper = new GestorBaseDatos(
									InformacionVehiculo.this);
							miBBDDHelper.abrirBaseDatos();
							bienHecho = miBBDDHelper.insertarVehiculosRecargas(registroRecarga);
							miBBDDHelper.close();
							Toast.makeText(
									getBaseContext(),
									"Los datos se han guardado satisfactoriamente",
									Toast.LENGTH_LONG).show();
							Intent aZona = new Intent(InformacionVehiculo.this,
									ZonasControl.class);
							startActivity(aZona);
						}
						if (valor.compareToIgnoreCase("2") == 0) {
							menuNoActivacionServicioRecarga();

						}
						if (valor.compareToIgnoreCase("3") == 0) {
							mostrarMensaje("Registro enviado y guardado como EXONERADO");
							guardarExonerados();
						}
					}
				});
		selecRegistro.setButton2("Revisar datos",
				new DialogInterface.OnClickListener() {
					boolean bienHecho = false;

					@Override
					public void onClick(DialogInterface arg0, int arg1) {
						// TODO Auto-generated method stub
					}
				});

		selecRegistro.show();
	}
	/**
	 * Valida la placa ingresada
	 * @param placa Cadena a validar
	 * @return Verdadero si es válida, falso si no lo es
	 */
	public boolean validarPlaca(String placa) {
		boolean esValida = false;
		String expresionRegularPlaca = "^([a-zA-Z]{2,3}\\d{3,4})$";
		CharSequence inputStr = placa;
		Pattern pattern = Pattern.compile(expresionRegularPlaca);
		Matcher matcher = pattern.matcher(inputStr);
		if (matcher.matches()) {
			esValida = true;
		}
		return esValida;
	}
	/**
	 * Muestra un mensaje con opciones cuando se ha perdido la conexión
	 */
	private void menuConexionFallidaInformacionEnvioDatos() {
		AlertDialog selecRegistro = new AlertDialog.Builder(
				InformacionVehiculo.this).create();
		selecRegistro.setTitle("Conexión Fallida");
		selecRegistro
				.setMessage("Los Datos no fueron enviados. Desea intentar de nuevo");

		selecRegistro.setButton("Si", new DialogInterface.OnClickListener() {
			boolean bienHecho = false;

			@Override
			public void onClick(DialogInterface arg0, int arg1) {
				// TODO Auto-generated method stub

				// try {
				GestorBaseDatos manejador = new GestorBaseDatos(InformacionVehiculo.this);
				try {
					manejador.abrirBaseDatos();
					mac=manejador.obtenerMac();
					manejador.close();
				} catch (Exception e) {
					
				}
				String valor = "";
				ComunicacionTCP comunicacion = new ComunicacionTCP();
				valor = comunicacion.envioInformacionVehiculo(informacionUsuario,
						infomacionNombreZona, informacionIdSubCalle, infomacionEspacioRegistro,
						placa, color, marca, horaControl, fechacontrol,mac);
				if (valor.compareToIgnoreCase("e") == 0) {
					menuConexionFallidaInformacionEnvioDatos();
				}
				if (valor.compareToIgnoreCase("0") == 0) {
					mostrarMensaje("Codigo Correcto");
					menutiposRegistrosHorizontal();
				}
				if (valor.compareToIgnoreCase("1") == 0) {
					mostrarMensaje("Registro enviado y guardado como RECARGA");
					GestorBaseDatos miBBDDHelper = new GestorBaseDatos(
							InformacionVehiculo.this);
					miBBDDHelper.abrirBaseDatos();
					registroRecarga = new RegistroRecarga();
					registroRecarga.setNombreControlador(informacionUsuario);
					registroRecarga.setNombreZona(infomacionNombreZona);
					registroRecarga.setIdSubCalle(Integer.parseInt(informacionIdSubCalle));
					registroRecarga.setNumeroEspacio(infomacionEspacioRegistro);
					registroRecarga.setPlaca(placa);
					registroRecarga.setColor(color);
					registroRecarga.setMarca(marca);
					registroRecarga.setHora(horaControl);
					registroRecarga.setFecha(fechacontrol);
					bienHecho = miBBDDHelper.insertarVehiculosRecargas(
							registroRecarga);
					miBBDDHelper.close();
					Toast.makeText(getBaseContext(),
							"Los datos se han guardado satisfactoriamente",
							Toast.LENGTH_LONG).show();
					Intent aZona = new Intent(InformacionVehiculo.this,
							ZonasControl.class);
					startActivity(aZona);
				}
				if (valor.compareToIgnoreCase("2") == 0) {
					menuNoActivacionServicioRecarga();
				}
				if (valor.compareToIgnoreCase("3") == 0) {
					mostrarMensaje("Registro enviado y guardado como EXONERADO");
					guardarExonerados();

				}
				// } catch (Exception e) {
				// TODO: handle exception
				// }

			}
		});
		selecRegistro.setButton2("No", new DialogInterface.OnClickListener() {
			boolean bienHecho = false;

			@Override
			public void onClick(DialogInterface arg0, int arg1) {
				// TODO Auto-generated method stub
				menuConfirmacionTipoRegistro();
			}
		});

		selecRegistro.show();
	}
	/**
	 * Muestra un mensaje con opciones para realizar otro tipo de registro 
	 * cuando la conexión ha fallado
	 */
	private void menuConfirmacionTipoRegistro() {
		AlertDialog selecRegistro = new AlertDialog.Builder(
				InformacionVehiculo.this).create();
		selecRegistro.setTitle("Conexión Fallida");
		selecRegistro
				.setMessage("Los Datos no fueron enviados. Desea ver otro tipos de registro ");

		selecRegistro.setButton("Si", new DialogInterface.OnClickListener() {
			boolean bienHecho = false;

			@Override
			public void onClick(DialogInterface arg0, int arg1) {
				// TODO Auto-generated method stub
				menutiposRegistrosHorizontal();
			}
		});
		selecRegistro.setButton2("No", new DialogInterface.OnClickListener() {
			boolean bienHecho = false;

			@Override
			public void onClick(DialogInterface arg0, int arg1) {
				// TODO Auto-generated method stub
				Intent aZona = new Intent(InformacionVehiculo.this,
						ZonasControl.class);
				startActivity(aZona);
			}
		});

		selecRegistro.show();
	}
	/**
	 * Verifica que los campos obligatorios no estén vacíos 
	 */
	private void comprobarCamposInformacionVehiculo() {
		if (comprobarGuardarValido()) {
			guardar();
			InformacionEnvioDatos();
		} else {
			mostrarMensaje("Rellena todos los campos antes de guardar.");
		}
	}

	/**
	 * Muestra un mensaje al usuario
	 * @param mensaje Mensaje a mostrar
	 */
	private void mostrarMensaje(String mensaje) {
		Toast.makeText(this, mensaje, 5000).show();
	}

	private boolean comprobarGuardarValido() {
		Boolean guardarEsValido = false; // empezamos suponiendo que es falso

		// Obtenemos la instancia de la caja de texto
		TextView cajaPlaca = (TextView) findViewById(R.id.id_placa);
		TextView cajaColor = (TextView) findViewById(R.id.id_color);
		String valor = cajaPlaca.getText().toString().trim();
		// Comprobamos las cajas existena
		if (validarPlaca(valor)) {
			if (cajaPlaca != null && cajaColor != null) {
				// Comprobamos que el usuario ha escrito algo en ambas
				if (cajaPlaca.getText() != null
						&& !cajaPlaca.getText().toString().equals("")) {
					// Titulo tiene algo, comprobamos tambien Autor
					if (cajaColor.getText() != null
							&& !cajaColor.getText().toString().equals("")) {
						guardarEsValido = true; // ha pasado las comprobaciones
					}
				}
			}
		} else {
			dilogoPlacaNoValida();
		}
		return guardarEsValido;
	}
	/**
	 * Envía la información de un exonerado con discapacidad
	 */
	public void enviarRegistroExoneradosDiscapacitados() {
		String valor = "";
		GestorBaseDatos manejador = new GestorBaseDatos(InformacionVehiculo.this);
		try {
			manejador.abrirBaseDatos();
			mac=manejador.obtenerMac();
			manejador.close();
		} catch (Exception e) {
			
		}
		ComunicacionTCP comunicacion = new ComunicacionTCP();
		registroExonerado = new RegistroExonerado();
		registroExonerado.setNombreControlador(informacionUsuario);
		registroExonerado.setNombreZona(infomacionNombreZona);
		registroExonerado.setIdSubCalle(Integer.parseInt(informacionIdSubCalle));
		registroExonerado.setNumeroEspacio(infomacionEspacioRegistro);
		registroExonerado.setPlaca(placa);
		registroExonerado.setColor(color);
		registroExonerado.setMarca(marca);
		registroExonerado.setHora(horaControl);
		registroExonerado.setFecha(fechacontrol);
		valor = comunicacion.gestionarConexionRegistroExoneradoDiscapacitado(registroExonerado,mac);
		if (valor.compareToIgnoreCase("e") == 0) {
			mostrarMensaje("Algo ha ido mal en la comunicación.");
		}
		if (valor.compareToIgnoreCase("0") == 0) {
			Intent aMulta = new Intent(InformacionVehiculo.this,
					RegistrarMulta.class);
			aMulta.putExtra("datoMultaSistDiscapacitado",
					"multaTarjetaDiscapacitado");
			// aMulta.putExtra("datoIdMultaAusenciaRecarga", 6);
			aMulta.putExtra("datoNomControladorRecarga", informacionUsuario);
			aMulta.putExtra("datoNombreZonaRecarga", infomacionNombreZona);
			aMulta.putExtra("datoEspacioRegistroRecarga", infomacionEspacioRegistro);
			aMulta.putExtra("datoIdSubCalleRecarga", informacionIdSubCalle);
			aMulta.putExtra("datoPlacaRecarga", placa);
			aMulta.putExtra("datoColorRecarga", color);
			aMulta.putExtra("datoMarcaRecarga", marca);
			aMulta.putExtra("datoHoraControlRecarga", horaControl);
			aMulta.putExtra("datoFechaControlRecarga", fechacontrol);
			startActivity(aMulta);

		}
		if (valor.compareToIgnoreCase("1") == 0) {
			mostrarMensaje("Código Correcto");

		}
	}
	/**
	 * Envía la información de un exonerado del Municipio
	 */
	public void enviarRegistroExoneradosMunicipio() {
		GestorBaseDatos manejador = new GestorBaseDatos(InformacionVehiculo.this);
		try {
			manejador.abrirBaseDatos();
			mac=manejador.obtenerMac();
			manejador.close();
		} catch (Exception e) {
			
		}
		String valor = "";
		registroExonerado = new RegistroExonerado();
		registroExonerado.setNombreControlador(informacionUsuario);
		registroExonerado.setNombreZona(infomacionNombreZona);
		registroExonerado.setIdSubCalle(Integer.parseInt(informacionIdSubCalle));
		registroExonerado.setNumeroEspacio(infomacionEspacioRegistro);
		registroExonerado.setFecha(fechacontrol);
		registroExonerado.setHora(horaControl);
		registroExonerado.setPlaca(placa);
		registroExonerado.setColor(color);
		registroExonerado.setMarca(marca);
		ComunicacionTCP comunicacion = new ComunicacionTCP();
		valor = comunicacion.gestionarConexionRegistroExoneradoMunicipio(registroExonerado,mac);
		Boolean bienHecho = false;
		GestorBaseDatos miBBDDHelper2 = new GestorBaseDatos(
				InformacionVehiculo.this);
		miBBDDHelper2.abrirBaseDatos();

		bienHecho = miBBDDHelper2.registroExonerados(registroExonerado);
		miBBDDHelper2.close();
		if (valor.compareToIgnoreCase("e") == 0) {
			mostrarMensaje("Los datos fueron guardados localmente para su posterior sicronización ");
			guardarExonerados();
		}
		if (valor.compareToIgnoreCase("0") == 0) {
			//
			// no multa ojo preguntar
			//
		}
		if (valor.compareToIgnoreCase("1") == 0) {
			mostrarMensaje("Código Correcto");
			Intent aZona = new Intent(InformacionVehiculo.this,
					ZonasControl.class);
			startActivity(aZona);
		}
	}
	/**
	 * Guarda la información de un exonerado del Municipio
	 */
	public void guardarExonerados() {
		boolean bienHecho = false;

		try {
			GestorBaseDatos miBBDDHelper = new GestorBaseDatos(
					InformacionVehiculo.this);
			miBBDDHelper.abrirBaseDatos();
			registroExonerado = new RegistroExonerado();
			registroExonerado.setNombreControlador(informacionUsuario);
			registroExonerado.setNombreZona(infomacionNombreZona);
			registroExonerado.setIdSubCalle(Integer.parseInt(informacionIdSubCalle));
			registroExonerado.setNumeroEspacio(infomacionEspacioRegistro);
			registroExonerado.setFecha(fechacontrol);
			registroExonerado.setHora(horaControl);
			registroExonerado.setPlaca(placa);
			registroExonerado.setColor(color);
			registroExonerado.setMarca(marca);
			bienHecho = miBBDDHelper.registroExonerados(registroExonerado);
			miBBDDHelper.close();
			Intent aZona = new Intent(InformacionVehiculo.this,
					ZonasControl.class);
			startActivity(aZona);

		} catch (Exception e) {
			bienHecho = false;
		}
		if (!bienHecho) {
			mostrarMensaje("Algo ha ido mal. Los datos no se han guardado.");
		}
	}


	@Override
	public void afterTextChanged(Editable s) {
		// TODO Auto-generated method stub
		setNumplaca(cajaPlaca.getText().toString().trim());
		Boolean cont = true;
		if (getNumplaca().length() >= 6) {
			if (validarPlaca(getNumplaca())) {
				if (cont == true) {
					cont = false;
					Toast.makeText(getApplicationContext(), "CADENA CORRECTA.",
							Toast.LENGTH_SHORT).show();
				}
			} else {
				dilogoPlacaNoValida();
			}
		}
	}

	@Override
	public void beforeTextChanged(CharSequence s, int start, int count,
			int after) {

	}

	@Override
	public void onTextChanged(CharSequence s, int start, int before, int count) {

	}
	/**
	 * Muestra un diálogo con opciones cuando un usuario de 
	 * recarga web no ha activado el servicio
	 */
	private void menuNoActivacionServicioRecarga() {
		AlertDialog seleccionarTarjetaPrepago = new AlertDialog.Builder(
				InformacionVehiculo.this).create();
		seleccionarTarjetaPrepago.setTitle("Opciones");
		seleccionarTarjetaPrepago
				.setMessage("El usuario no ha activado el servicio de Recargas. ¿Posee Tarjeta Prepago?");
		seleccionarTarjetaPrepago.setButton("Si",
				new DialogInterface.OnClickListener() {
					boolean bienHecho = false;

					@Override
					public void onClick(DialogInterface arg0, int arg1) {
						// TODO Auto-generated method stub
						Intent aRegistroTarjeta = new Intent(
								InformacionVehiculo.this,
								RegistrarTarjeta.class);
						aRegistroTarjeta.putExtra("datoUsuario", informacionUsuario);
						aRegistroTarjeta.putExtra("datoNombreZona",
								infomacionNombreZona);
						aRegistroTarjeta.putExtra("datoIdSubCalle",
								informacionIdSubCalle);
						aRegistroTarjeta.putExtra("datoNumeroespacio",
								infomacionEspacioRegistro);
						aRegistroTarjeta.putExtra("datoplaca", placa);
						aRegistroTarjeta.putExtra("datocolor", color);
						aRegistroTarjeta.putExtra("datomarca", marca);
						aRegistroTarjeta.putExtra("datohoraControl",
								horaControl);
						aRegistroTarjeta.putExtra("datofechacontrol",
								fechacontrol);
						startActivity(aRegistroTarjeta);

					}
				});
		seleccionarTarjetaPrepago.setButton2("No",
				new DialogInterface.OnClickListener() {
					boolean bienHecho = false;

					@Override
					public void onClick(DialogInterface arg0, int arg1) {
						// TODO Auto-generated method stub
						GestorBaseDatos manejadorMac = new GestorBaseDatos(InformacionVehiculo.this);
						try {
							manejadorMac.abrirBaseDatos();
							mac=manejadorMac.obtenerMac();
							manejadorMac.close();
						} catch (Exception e) {
							
						}
						String valor = "";
						ComunicacionTCP comunicacion = new ComunicacionTCP();
						valor = comunicacion
								.envioInformacionVehiculoNoActivacionRecarga(
										informacionUsuario, infomacionNombreZona,
										informacionIdSubCalle, infomacionEspacioRegistro,
										placa, color, marca, horaControl,
										fechacontrol,mac);
						if (valor.compareToIgnoreCase("e") == 0) {
							menuConexionfallidaActivacionServicioRecarga();

						}
						if (valor.compareToIgnoreCase("1") == 0) {
							System.out
									.println("si llego trama  de respuesta con 1");
							mostrarMensaje("Codigo Correcto");
							GestorBaseDatos g = new GestorBaseDatos(
									InformacionVehiculo.this);
							g.abrirBaseDatos();
							registroRecarga = new RegistroRecarga();
							registroRecarga.setNombreControlador(informacionUsuario);
							registroRecarga.setNombreZona(infomacionNombreZona);
							registroRecarga.setIdSubCalle(Integer.parseInt(informacionIdSubCalle));
							registroRecarga.setNumeroEspacio(infomacionEspacioRegistro);
							registroRecarga.setPlaca(placa);
							registroRecarga.setColor(color);
							registroRecarga.setMarca(marca);
							registroRecarga.setHora(horaControl);
							registroRecarga.setFecha(fechacontrol);
							bienHecho = g.insertarVehiculosRecargas(registroRecarga);
							g.close();
							Intent aZona = new Intent(InformacionVehiculo.this,
									ZonasControl.class);
							startActivity(aZona);
						}

					}
				});

		seleccionarTarjetaPrepago.show();
	}

	private void menuConexionfallidaActivacionServicioRecarga() {
		AlertDialog selecRegistro = new AlertDialog.Builder(
				InformacionVehiculo.this).create();
		selecRegistro.setTitle("Conexión Fallida");
		selecRegistro
				.setMessage("Los Datos no fueron enviados. ¿Desea intentar de nuevo?");
		selecRegistro.setButton(0, "Si", new DialogInterface.OnClickListener() {
			boolean bienHecho = false;

			@Override
			public void onClick(DialogInterface arg0, int arg1) {
				// TODO Auto-generated method stub
				GestorBaseDatos manejador = new GestorBaseDatos(InformacionVehiculo.this);
				try {
					manejador.abrirBaseDatos();
					mac=manejador.obtenerMac();
					manejador.close();
				} catch (Exception e) {
					
				}
				try {
					String valor = "";
					
					ComunicacionTCP comunicacion = new ComunicacionTCP();
					valor = comunicacion.envioInformacionVehiculo(informacionUsuario,
							infomacionNombreZona, informacionIdSubCalle,
							infomacionEspacioRegistro, placa, color, marca,
							horaControl, fechacontrol,mac);
					if (valor.compareToIgnoreCase("e") == 0) {
						menuConexionfallidaActivacionServicioRecarga();

					}
					if (valor.compareToIgnoreCase("1") == 0) {
						mostrarMensaje("Datos enviado Correctamente");
						miBBDDHelper.abrirBaseDatos();
						registroRecarga = new RegistroRecarga();
						registroRecarga.setNombreControlador(informacionUsuario);
						registroRecarga.setNombreZona(infomacionNombreZona);
						registroRecarga.setIdSubCalle(Integer.parseInt(informacionIdSubCalle));
						registroRecarga.setNumeroEspacio(infomacionEspacioRegistro);
						registroRecarga.setPlaca(placa);
						registroRecarga.setColor(color);
						registroRecarga.setMarca(marca);
						registroRecarga.setHora(horaControl);
						registroRecarga.setFecha(fechacontrol);
						bienHecho = miBBDDHelper.insertarVehiculosRecargas(
							registroRecarga);
						miBBDDHelper.close();
					}

				} catch (Exception e) {
					// TODO: handle exception
				}
			}
		});
		selecRegistro.setButton2("No", new DialogInterface.OnClickListener() {
			boolean bienHecho = false;
			@Override
			public void onClick(DialogInterface arg0, int arg1) {
				// TODO Auto-generated method stub
				mostrarMensaje("Los datos fueron guardados localmente para su posterior sicronización ");
				miBBDDHelper.abrirBaseDatos();
				registroRecarga = new RegistroRecarga();
				registroRecarga.setNombreControlador(informacionUsuario);
				registroRecarga.setNombreZona(infomacionNombreZona);
				registroRecarga.setIdSubCalle(Integer.parseInt(informacionIdSubCalle));
				registroRecarga.setNumeroEspacio(infomacionEspacioRegistro);
				registroRecarga.setPlaca(placa);
				registroRecarga.setColor(color);
				registroRecarga.setMarca(marca);
				registroRecarga.setHora(horaControl);
				registroRecarga.setFecha(fechacontrol);
				bienHecho = miBBDDHelper.insertarVehiculosRecargas(registroRecarga);
				miBBDDHelper.close();
			}
		});
		selecRegistro.show();
	}
	/**
	 * Muestra un diálogo con sugerencia cuando laplaca no es válida
	 * @return Diálogo con opciones
	 */
	private Dialog dilogoPlacaNoValida() {
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setMessage(
				"La etiquetaPlaca no es correcta. Ejemplo de formato (LBN134 ó lbn1962)")
				.setTitle("Validación etiquetaPlaca")
				.setIcon(R.drawable.ic_11_alerts_and_states_warning)
				.setPositiveButton("Aceptar",
						new DialogInterface.OnClickListener() {
							public void onClick(DialogInterface dialog, int id) {
								dialog.cancel();
							}
						});
		AlertDialog alert = builder.create();
		alert.show();
		return alert;
	}

	@Override
	public void onClick(View view) {
		// TODO Auto-generated method stub
		if (view.equals(botonGuardar)) {
			comprobarCamposInformacionVehiculo();
		}
		if (view.equals(botonCancelar)) {
			cancelar();
		}
	}

}
